package com.powerteam.service.sys;

import com.powerteam.model.sys.Menu;
import com.powerteam.vo.Result;
import com.powerteam.vo.TreeNode;

import java.util.List;

/**
 * 菜单相关服务接口
 *
 * @author jinming.zhang
 * @version 0.0.1
 * @date 2021/12/30
 */
public interface MenuService {


    /**
     * 查询所有菜单
     *
     * @return 菜单列表
     */
    List<Menu> findAllMenu();

    /**
     * 根据用户Id查询该用户的菜单信息
     *
     * @param userId 用户Id
     * @return 菜单信息
     */
    List<TreeNode<Menu>> findUserMenuTree(Integer userId);

    /**
     * 查找所有菜单树
     *
     * @param
     * @return List<TreeNode < Menu>>
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    List<TreeNode<Menu>> findAllMenuTree();

    /**
     * 查询某角色的菜单列表
     *
     * @param roleId
     * @return List<Menu>
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    List<Menu> findRoleMenu(Integer roleId);

    /**
     * 检查是否存在该菜单
     *
     * @param menu
     * @return Result
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    Result checkMenu(Menu menu);

    /**
     * 添加菜单
     *
     * @param menu
     * @return Result
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    Result insert(Menu menu);

    /**
     * 删除菜单
     *
     * @param menuId
     * @return Result
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    Result delete(Integer menuId);

    /**
     * 根据菜单Id获取菜单信息
     *
     * @param menuId
     * @return Menu
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    Menu findById(Integer menuId);

    /**
     * 修改菜单信息
     *
     * @param menu
     * @return Result
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    Result update(Menu menu);

    /**
     * 上调菜单
     *
     * @param menuId
     * @return Result
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    Result up(Integer menuId);

    /**
     * 下调菜单
     *
     * @param menuId
     * @return Result
     * @Author jinming.zhang
     * @Date 2022/1/11
     */
    Result down(Integer menuId);
}
